package com.hmk.blogboot.util;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;

import java.beans.PropertyDescriptor;
import java.util.ArrayList;
import java.util.List;

public class MyBeanUtils {
    /*
    *
    * 获取所有属性值为空属性名数组
    *
    * */
    public static String[] getNullPropertyNames(Object source){
        BeanWrapper beanWrapper = new BeanWrapperImpl(source);
        //获取包装对象的PropertyDescriptors（由标准JavaBean自省确定）
        PropertyDescriptor[] pds = beanWrapper.getPropertyDescriptors();
        //创建一个空得list容器，存储空属性名
        List<String> nullPropertyNames = new ArrayList<>();
        //for循环遍历propertyDescriptors
        for(PropertyDescriptor pd : pds){
            //获取属性名
            String propertyName = pd.getName();
            //判断属性为空，就把属性名添加到容器中
            if(beanWrapper.getPropertyValue(propertyName) == null){
                nullPropertyNames.add(propertyName);
            }
        }
        return nullPropertyNames.toArray(new String[nullPropertyNames.size()]);
    }
}
